/**
 * Copyright (C) 2012 The SkyTvOS Project
 * <p/>
 * Version     Date           Author
 * ─────────────────────────────────────
 * 2014年7月21日         Root.Lu
 */

package com.tianci.appstore.controller.manager;

import com.coocaa.x.app.framework.app.LiteAppApplication;
import com.coocaa.x.framework.app.UpgradeManager;
import com.coocaa.x.service.liteupgrade.aidl.UpgradeParams;
import com.tianci.appstore.controller.AppStoreBaseController;
import com.tianci.appstore.ui.about.AboutListener;
import com.tianci.appstore.ui.about.UpgradeListener;
import com.tianci.appstore.ui.widget.TipToast;

public class AboutMEController extends AppStoreBaseController// implements DownloaderListener
{
    public enum LOG4CheckUpdatePath {
        StartUp, CheckUpdate,
    }

    private static AboutMEController instance = new AboutMEController();

    public static AboutMEController getInstance() {
        return instance;
    }

    public enum ACTION {
        /**
         * @Fields UPDATE TODO 检查更新
         */
        CHECK_UPDATE,
        /**
         * @Fields DO_UPDATE TODO 开始更新
         */
        DO_UPDATE,
        /**
         * @Fields CANCEL_UPDATE TODO取消更新
         */
        CANCEL_UPDATE,
    }

    private AboutListener listener = null;

    // private UpgradeListener uListener = null;

    // private Thread downloadThread = null;
    // private Downloader downloader = null;

    // private LOG4CheckUpdatePath log4CheckUpdatePath = null;

    public void init(AboutListener listener, UpgradeListener uListener, LOG4CheckUpdatePath path) {
        // log4CheckUpdatePath = path;
        this.listener = listener;
        // this.uListener = uListener;
        runOnThread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    String pkgname = mContext.getPackageName();
                    final String version = mContext.getPackageManager().getPackageInfo(pkgname, 0).versionName;
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            if (AboutMEController.this.listener != null)
                                AboutMEController.this.listener.onRequestVersion(version);
                        }
                    });
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }

    public void handleAction(final ACTION action) {
        runOnThread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                switch (action) {
                    case CHECK_UPDATE: {
                        sendBtnClickLOG("检测更新");
                        if (!LiteAppApplication.checkNetworkConnection(TipToast.showNetIsNotConnectedToastRunnable))
                            break;

                        UpgradeParams params = new UpgradeParams();
                        params.params.put("device_channel", LiteAppApplication.getDeviceChannel());
                        params.params.put("can_show_loading", Boolean.TRUE.toString());
                        UpgradeManager.checkUpgrade(params);
                        // AppStoreUpdateInfo info = WebDataManager.getInstance()
                        // .getUpdateInfoFromWeb();
                        // String update_info = "";
                        // if (info.hasUpdate)
                        // update_info += info.storeApkInfo.updateInfo + "\n";
                        // uListener.onGetVersionInfo(info.hasUpdate, update_info);
                        // break;
                    }
                    // case DO_UPDATE:
                    // {
                    // sendBtnClickLOG("下载更新");
                    // if (!Android.isNetConnected(mContext))
                    // {
                    // TipToast.getInstance(mContext).showNetChangeToast(false);
                    // break;
                    // }
                    // try
                    // {
                    // LogAPIForAppStore.userUpgrade(log4CheckUpdatePath.toString());
                    // AppStoreUpdateInfo info = XServiceManager.getLitePMService()
                    // .getAppStoreUpdateInfo();
                    // String download_path = AppDataProvider.getInstance().getDownloadPath();
                    //
                    // DownloadTask task = new DownloadTask();
                    // task.title = info.storeApkInfo.appName;
                    // task.url = info.storeApkInfo.apkDownUrl;
                    // task.savepath = download_path;
                    // task.filename = System.currentTimeMillis() + ".apk";
                    // task.extra = new DownloadExtra(mContext.getPackageName(),
                    // mContext.getPackageName(), mContext.getPackageName(),
                    // info.storeApkInfo.appName).toString();
                    // if (downloader == null)
                    // {
                    // downloader = new HttpDownloader();
                    // downloader.setListener(AboutMEController.this);
                    // }
                    // downloader.setDownloadTask(task);
                    // if (downloadThread == null)
                    // {
                    // downloadThread = new Thread("自更新下载线程")
                    // {
                    // @Override
                    // public void run()
                    // {
                    // // TODO Auto-generated method stub
                    // runOnUiThread(new Runnable()
                    // {
                    // @Override
                    // public void run()
                    // {
                    // // TODO Auto-generated method stub
                    // uListener.onRefreshPercent(0);
                    // }
                    // });
                    // downloader.run();
                    // downloadThread = null;
                    // }
                    // };
                    // downloadThread.start();
                    // }
                    // } catch (RemoteException e)
                    // {
                    // // TODO Auto-generated catch block
                    // e.printStackTrace();
                    // }
                    // break;
                    // }
                    // case CANCEL_UPDATE:
                    // {
                    // sendBtnClickLOG("取消更新");
                    // if (downloader != null)
                    // {
                    // downloader.delete();
                    // }
                    // try
                    // {
                    // AppStoreUpdateInfo info = XServiceManager.getLitePMService()
                    // .getAppStoreUpdateInfo();
                    // if (info != null && info.hasUpdate)
                    // {
                    // if (info.storeApkInfo.forced.equals("1"))
                    // {
                    // android.os.Process.killProcess(android.os.Process.myPid());
                    // }
                    // }
                    // } catch (RemoteException e)
                    // {
                    // // TODO Auto-generated catch block
                    // e.printStackTrace();
                    // }
                    // break;
                    // }
                    default:
                        break;
                }
            }
        });
    }

    @Override
    public void destroy() {
    }
    //
    // @Override
    // public void onPrepare(DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    //
    // }
    //
    // @Override
    // public void onStart(DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    //
    // }
    //
    // @Override
    // public void onStop(DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    // runOnUiThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // uListener.onDownloadFinished(false);
    // }
    // });
    // }
    //
    // @Override
    // public void onFinish(final DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    // runOnThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // runOnUiThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // uListener.onDownloadFinished(true);
    // }
    // });
    // String apk = task.savepath + task.filename;
    // try
    // {
    // XServiceManager.getLitePMService().install(apk, false);
    // } catch (RemoteException e)
    // {
    // // TODO Auto-generated catch block
    // e.printStackTrace();
    // }
    // }
    // });
    // }
    //
    // @Override
    // public void onDelete(DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    // runOnUiThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // uListener.onDownloadFinished(false);
    // }
    // });
    // }
    //
    // @Override
    // public void onProcessInfo(DownloadTask task, final ProcessInfo info)
    // {
    // // TODO Auto-generated method stub
    // runOnUiThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // uListener.onRefreshPercent(info.percent);
    // }
    // });
    // }
    //
    // @Override
    // public void onError(DownloadTask task, DownloadError error)
    // {
    // // TODO Auto-generated method stub
    // runOnUiThread(new Runnable()
    // {
    // @Override
    // public void run()
    // {
    // // TODO Auto-generated method stub
    // uListener.onDownloadFinished(false);
    // }
    // });
    // }
    //
    // @Override
    // public void onReady(DownloadTask task)
    // {
    // // TODO Auto-generated method stub
    //
    // }
}
